package suanfa;
//静态方法不能调用非静态变量 只能调用外面的静态变量 非静态方法可以调用非静态 静态变量

import java.util.ArrayList;
import java.util.List;

public class Solution {

    public static List<Integer> spiralOrder(int[][] matrix) {
        ArrayList<Integer> list = new ArrayList<>();
        if (matrix == null)
            return list;
        int rows = matrix.length;
        if (rows == 0)
            return list;
        int cols = matrix[0].length;


        int start = 0;
        while (cols > start * 2 && rows > start * 2) {
            // Print(matrix, cols, rows, start);
            int endCols = cols - 1 - start;
            int endRows = rows - 1 - start;
            for (int i = start; i <= endCols; ++i) {
                list.add(matrix[start][i]);
            }
            //这里以后的三次循环都要做判断 因为每次做完一行或一列遍历 可能矩阵已经全部遍历完
            // (ps:为什么第一次不做判断？因为在方法开始前已经做了判断)
            if (start < endRows) {
                for (int i = start + 1; i <= endRows; ++i) {
                    list.add(matrix[i][endCols]);
                }
                if (start < endCols) {
                    for (int i = endCols - 1; i >= start; --i) {
                        list.add(matrix[endRows][i]);
                    }
                    if (start < endRows - 1) {
                        for (int i = endRows - 1; i >= start + 1; --i) {
                            list.add(matrix[i][start]);
                        }
                    }
                }
            }
            start++;
        }
        return list;
    }

    public static void main(String[] args) {
        int a[][] = new int[1][0];
        List<Integer> list = spiralOrder(a);
        System.out.println(list);
    }
}